// Nom : Carlos Cristoful Rodriguez
// Nom : Marc Lopez Baz
public class Tauler {

	private int width, height;
	private Casella[][] taulerjoc;
	// creem una instancia del tipus taulerjoc format per caselles

	private int filActual, colActual;

	// filActual i colActual ens guardaran la posicio de la casella en que ens
	// trobem
	public Tauler(int tauler_files, int tauler_columnes, int iniciI, int iniciJ) {
		taulerjoc = new Casella[tauler_files][tauler_columnes];
		// a partir de les dades obtingudes del fitxer creem el tauler
		this.filActual = iniciI;
		this.colActual = iniciJ;
		this.width = tauler_files;
		this.height = tauler_columnes;

	} // Constructor

	public int getFilActual() {
		return filActual;
	}

	public int getColActual() {
		return colActual;
	}

	public void creaCasella(Casella c, int i, int j) {
		taulerjoc[i][j] = new Casella(c.getEtiqueta(), c.getLletra());
	} // creem el tauler de caselles

	public void setCasella(int i, int j, String eti, String ll) {
		taulerjoc[i][j].setLletra(ll);
		if (eti != null)
			taulerjoc[i][j].setEtiqueta(eti);
	}

	public int getWidth() {
		return width;
	}

	public int getHeight() {
		return height;
	}

	public void setCasella(int i, int j, Casella c) {
		taulerjoc[i][j] = c;
	}

	public Casella getCasella(int i, int j) {
		return taulerjoc[i][j];
	}

	public static int arreglar_i_j(int i, int max) {
		if (i < 0)
			return max - 1;
		else if (i >= max)
			return 0;
		else
			return i;
	}

	public boolean seleccionarCasella(int i, int j) {
		Casella Actual = taulerjoc[filActual][colActual];
		boolean correcte = false;

		int iaux = filActual, jaux = colActual;

		if (Actual.getEtiqueta().equals("B")) {
			iaux--;
			iaux = arreglar_i_j(iaux, height);
			if (i == iaux && j == jaux) {
				taulerjoc[filActual][jaux].deseleccionar();
				taulerjoc[i][j].obrir();
				filActual = i;
				colActual = j;
				correcte = true;
			}
		}

		if (Actual.getEtiqueta().equals("A")) {
			iaux++;
			iaux = arreglar_i_j(iaux, height);
			if (i == iaux && j == jaux) {
				taulerjoc[filActual][jaux].deseleccionar();
				taulerjoc[i][j].obrir();
				filActual = i;
				colActual = j;
				correcte = true;
			}
		}

		if (Actual.getEtiqueta().equals("D")) {
			jaux--;
			jaux = arreglar_i_j(jaux, width);
			if (i == iaux && j == jaux) {
				taulerjoc[iaux][colActual].deseleccionar();
				taulerjoc[i][j].obrir();
				filActual = i;
				colActual = j;
				correcte = true;
			}
		}

		if (Actual.getEtiqueta().equals("E")) {
			jaux++;
			jaux = arreglar_i_j(jaux, width);
			if (i == iaux && j == jaux) {
				taulerjoc[iaux][colActual].deseleccionar();
				taulerjoc[i][j].obrir();
				iaux = i;
				colActual = j;
				correcte = true;
			}
		}

		return correcte;
	}

}